/*
 * ProxClone : Proximity Clone, a war of numbers
 * Copyright (C) 2011-2011 Edi Ermawan <edi.ermawan@gmail.Com>
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 */
#ifndef _GAME_STATE_H_
#define _GAME_STATE_H_

#include <SDL.h>
#include "Constant.h"
#include "GameStateManager.h"
#include "GraphicUtils.h"
#include "AudioManager.h"

/* abstract class for game state */

namespace Game
{
	class GameState
	{
	private:
		//--
	public:
		GameState(){};
		virtual ~GameState(){};
	protected:
		float mCursorXValue;
		float mCursorYValue;
		float mCursorClicked;
	public:
		virtual void OnEvent(SDL_Event* Event)
		{

			mCursorClicked=false;
			switch (Event->type)
			{
			  case SDL_MOUSEMOTION:
				  {
						mCursorXValue=static_cast<float>(Event->motion.x);
						mCursorYValue=static_cast<float>(Event->motion.y);
						//std::cout<<" X: ========================================   "<<mCursorXValue<<std::endl;
				  }
				  break;
			  case SDL_MOUSEBUTTONDOWN:
				  {
						mCursorClicked=true;
						Game::AudioManager::GetInstance().PlaySound(Game::Audio::SOUND_CLICK);
				  }
				  break;
			  case SDL_MOUSEBUTTONUP:
				  {
						//
				  }
				  break;
			  }
		}
		virtual bool OnInit(SDL_Surface* p_SurfDisplay)=0;
        virtual void OnLoop()=0;
		virtual void OnRender(SDL_Surface* p_SurfDisplay)=0;
		virtual void OnCleanup()=0;
	};
}

#endif